<?php
/*
 * 应用类
 */
class App{ 
	public static function Run(){
//		1、初始化框架
		self::Init();
//		2、设置外部路径
		self::SetUrl();
//		3、自动载入
		spl_autoload_register(array(__CLASS__,'autoload'));		
//		4、创建demo 控制器
		self::CreateDemo();
//		5、实例化控制器
		self::AppRun();
	}
	private static function Init(){
//		框架配置路径
		$sysConfigPath = CONFIG_PATH .'/Config.php';
//		用户配置路径
		$userConfigPath = APP_CONFIG_PATH . '/Config.php';
		if(!is_file($userConfigPath)){
			$str =<<<str
<?php
return array(
//配置项==>配置值

);
?>
str;
			file_put_contents($userConfigPath,$str);
		}
//		加载配置项
		C(include $sysConfigPath);
		C(include $userConfigPath);
//		设置时区
		date_default_timezone_set(C('DATA_TIMEZONE'));
//		开启session
		session_id() || session_start();
	}
	
//	设置外部路径

	private static function SetUrl(){
//		应用路径
		define('__APP__','http://'. $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']);
//		项目更目录
		define('__ROOT__',dirname(__APP__));
//		view路径
		define('__VIEW__', __ROOT__. '/' .APP_NAME . '/View');
//		public 路径
		define('__PUBLIC__',__VIEW__ . '/Public');		
	}
	
//	自动载入控制器 、工具类方法

	private static function autoload($className){ //className 形参 调用的时controller方法
		if(strlen($className)>10 && substr($className,-10) == 'Controller'){
//			控制方法类
			$path = APP_CONTROLLER_PATH .'/' . $className . '.class.php';//组合controller 方法文件路径 
			if(is_file($path)){
				require $path;
			}else{
				halt($path . '控制方('.$path.')法未找到！');
			}
		}else{
//			工具扩展类
			$path = TOOL_PATH . '/' . $className . '.class.php';
			if(is_file($path)){
				include $path;
			}else{
				halt($path . '找不到！');
			}
		}
		
	}
	
//	创建demo

	private static function CreateDemo(){
		$data = <<<str
<?php 
class Indexcontroller extends controller{
	public function index(){
	header('Content-type:text/html;charset=utf-8;'); 
echo '<div style="width:300px;height:300px;background:#ddd;border:1px solid #999;border-radius: 15px;margin:50px auto;padding:20px;text-align:center;box-shadow: 2px 2px 2px #999;"> HELLO HG 框架！<br /> COME ON<br /></div>';	
	}

}
?>
str;
		$path = APP_CONTROLLER_PATH . '/IndexController.class.php';
		//如果文件不存在，则给用户创建
		is_file($path) || file_put_contents($path, $data);	
	}
//	实例化控制器
	private static function AppRun(){
		$controller = isset($_GET['c']) ? ucfirst($_GET['c']):'Index'; //获取地址栏传的方法
		define('CONTROLLER',$controller);//定义CONTROLLER
		$controller .= 'Controller'; //方法连接字符串
		$action = isset($_GET['a']) ?$_GET['a']:'index'; //获取传参
		define('ACTION',$action);
		$Obj = new $controller;
		$Obj->$action();
		
	}
}
?>
